home *** CD-ROM | disk | FTP | other *** search
/ Loadstar Extras 3 / Ex3side2.d64 / zip 2.0 (.txt) < prev   
Encoding:
Commodore BASIC  |  1990-01-01  |  12.5 KB  |  456 lines

  1. 999 end
  2. 1000 bs=49152:goto1630
  3. 1010 b=peek(ad):ad=ad+1:ifb=32then1010
  4. 1020 return
  5. 1030 aa=ad
  6. 1040 b=peek(aa):aa=aa+1:ifb=32then1040
  7. 1050 return
  8. 1060 gosub1010:ifb<>0thenprintb:goto1730
  9. 1070 return
  10. 1080 n=0
  11. 1090 gosub1010:ifb<48 or b>57 then return
  12. 1100 n=n*10+(b-48):goto1090
  13. 1110 nh=int(nn/256):nl=nn-(nh*256):return
  14. 1120 gosub1110:print mid$(hx$,(nhand240)/16+1,1);mid$(hx$,(nhand15)+1,1);
  15. 1130 printmid$(hx$,(nland240)/16+1,1);mid$(hx$,(nland15)+1,1);:return
  16. 1140 bx=bx+1:ifp<>3 then ml=ml+1:return
  17. 1150 poke ml,z:ml=ml+1:return
  18. 1160 ifp<>1thensp=sp+1:sl=sl+1:return
  19. 1170 pokesp,z:sp=sp+1:sl=sl+1:return
  20. 1180 ifp<>3thenreturn
  21. 1190 dx=dx+1:poke dw,nl:poke dw+1,nh:dw=dw+2:return
  22. 1200 gosub1010:ifb>64then1220
  23. 1210 g=1:ad=ad-1:gosub1080:ad=ad-1:nn=n:goto1240
  24. 1220 gosub1250
  25. 1230 g=0:b=b-65:nn=(b*2)+679
  26. 1240 b=peek(ad):gosub1110:return
  27. 1250 if(b<65 or b>90)then5360
  28. 1260 return
  29. 1270 z=173:gosub1140:z=nl:gosub1140:z=nh:goto1140
  30. 1280 z=173:gosub1140:z=nl+1:gosub1140:z=nh:goto1140
  31. 1290 z=141:gosub1140:z=nl:gosub1140:z=nh:goto1140
  32. 1300 z=141:gosub1140:z=nl+1:gosub1140:z=nh:goto1140
  33. 1310 z=169:gosub1140:z=nl:goto1140
  34. 1320 z=169:gosub1140:z=nh:goto1140
  35. 1330 z=173:gosub1140:z=vl:gosub1140:z=vh:goto1140
  36. 1340 z=173:gosub1140:z=vl+1:gosub1140:z=vh:goto1140
  37. 1350 z=141:gosub1140:z=vl:gosub1140:z=vh:goto1140
  38. 1360 z=141:gosub1140:z=vl+1:gosub1140:z=vh:goto1140
  39. 1370 nl=ms(h,0):nh=ms(h,1):return
  40. 1380 gosub1140:z=nl:gosub1140:z=nh:goto1140
  41. 1390 gosub1140:z=nl+1:gosub1140:z=nh:goto1140
  42. 1400 gosub1140:z=nl:goto1140
  43. 1410 gosub1140:z=nh:goto1140
  44. 1420 z=165:gosub1140:z=y:goto1140
  45. 1430 z=162:gosub1140:z=y:goto1140
  46. 1440 z=161:gosub1140:z=y:goto1140
  47. 1450 z=145:gosub1140:z=y:goto1140
  48. 1460 z=160:gosub1140:z=y:goto1140
  49. 1470 z=133:gosub1140:z=y:goto1140
  50. 1480 z=56:goto1140
  51. 1490 z=24:goto1140
  52. 1500 z=32:gosub1140:z=yl:gosub1140:z=yh:goto1140
  53. 1510 z=76:gosub1140:z=yl:gosub1140:z=yh:goto1140
  54. 1520 z=233:gosub1140:z=nl:goto1140
  55. 1530 z=233:gosub1140:z=nh:goto1140
  56. 1540 z=105:gosub1140:z=nl:goto1140
  57. 1550 z=105:gosub1140:z=nh:goto1140
  58. 1560 z=237:gosub1140:z=nl:gosub1140:z=nh:goto1140
  59. 1570 z=237:gosub1140:z=nl+1:gosub1140:z=nh:goto1140
  60. 1580 z=109:gosub1140:z=nl:gosub1140:z=nh:goto1140
  61. 1590 z=109:gosub1140:z=nl+1:gosub1140:z=nh:goto1140
  62. 1600 z=y1:gosub1140:z=y2:goto1140
  63. 1610 z=y1:gosub1140:z=y2:gosub1140:z=y3:goto1140
  64. 1620 z=169:gosub1140:z=y:goto1140
  65. 1630 lx=3:xx=0:zp=bs+80:p=1:zm=zp:sk=-1
  66. 1640 dim ll(200,1),fs(6,4),li%(lx,5),ms(5,3),oc%(3,1)
  67. 1650 gosub5440:sys828,232,3
  68. 1660 fori=0tolx:forj=0to5:readli%(i,j):next:next:bx=0:dx=0:f2=0
  69. 1670 ad=peek(43)+peek(44)*256:print"[147]          ***** pass";p;" *****"
  70. 1680 sp=zp:ml=zm
  71. 1690 nm=peek(ad)+peek(ad+1)*256
  72. 1700 ln=peek(ad+2)+peek(ad+3)*256:ifln>999then1740
  73. 1710 print"          compiling line #"mid$(str$(ln),2)
  74. 1720 ifp=2thenll(xx,0)=ln:ll(xx,1)=ml:xx=xx+1
  75. 1730 ad=ad+4:gosub1010:goto1790
  76. 1740 ifp=1thenp=2:zm=sp:r1=zm:la=sp:u1=bx:bx=0:goto1670
  77. 1750 ifp=2thenp=3:zm=la:r2=zm:gosub5420:db=la+bx+4:dw=db:u2=bx:bx=0:goto1670
  78. 1760 u3=bx:gosub4760:print"done!":print:gosub4580
  79. 1770 ifpeek(ml-1)<>96thenz=96:gosub1140
  80. 1780 end
  81. 1790 ifb=136then3610:rem let
  82. 1800 ifb=153then2020:rem print
  83. 1810 ifb=128then2300:rem end
  84. 1820 ifb=137then2170:rem goto
  85. 1830 ifb=141then2230:rem gosub
  86. 1840 ifb=142then2300:rem return
  87. 1850 ifb=139then2320:rem if
  88. 1860 ifb=151then2600:rem poke
  89. 1870 ifb=129then2710:rem for
  90. 1880 ifb=130then2960:rem next
  91. 1890 ifb=135then3320:rem read
  92. 1900 ifb=140then3420:rem restore
  93. 1910 ifb=131then3470:rem data
  94. 1920 ifb=156then3510:rem clr
  95. 1930 ifb=143then2000:rem rem
  96. 1940 ifb=161then3530:rem get
  97. 1950 ifb=158then4300:rem sys
  98. 1960 rem this line assumes let
  99. 1970 ad=ad-1:goto3610
  100. 1980 sysbs:end
  101. 1990 fori=0toxx-1:printll(i,0),ll(i,1):next
  102. 2000 ad=nm:goto1690
  103. 2010 rem handle print
  104. 2020 gosub1010:ifb=199then3250
  105. 2030 ifb>64 then2110
  106. 2040 ifb<>34then2150
  107. 2050 sl=0:nn=sp:gosub1110
  108. 2060 b=peek(ad):ad=ad+1:if((b=0)or(b=34))then2080
  109. 2070 z=b:gosub1160:goto2060
  110. 2080 gosub1310:y=34:gosub1470:gosub1320:y=35:gosub1470
  111. 2090 y=sl:gosub1430:yl=37:yh=171:gosub1500:gosub1010:ifb<>59then2150
  112. 2095 goto2000
  113. 2100 rem handle print <var>
  114. 2110 ifb<65 or b>91 then5360
  115. 2120 b=b-65:nn=(b*2)+679:gosub1110:gosub1010:w=b
  116. 2130 gosub1280:z=174:gosub1380:yl=205:yh=189:gosub1500:ifw<>59then2150
  117. 2135 goto2000
  118. 2140 rem handle print <cr>
  119. 2150 yl=215:yh=170:gosub1500:goto2000
  120. 2160 rem handle goto <line number>
  121. 2170 gosub1080:if p<>3 then2210
  122. 2180 ifxx=0then5380
  123. 2190 f2=0:fori=0to(xx-1):ifll(i,0)=nthenf2=1:nn=ll(i,1)
  124. 2200 next:iff2=0then5380
  125. 2210 gosub1110:yl=nl:yh=nh:gosub1510:goto2000
  126. 2220 rem handle gosub <line number>
  127. 2230 gosub1080:if p<>3 then2210
  128. 2240 ifxx=0then5380
  129. 2250 f2=0:fori=0to(xx-1):ifll(i,0)=nthenf2=1:nn=ll(i,1)
  130. 2260 next:iff2=0then5380
  131. 2270 gosub1110:z=32:gosub1140:z=nl:gosub1140:z=nh:gosub1140:goto2000
  132. 2280 gosub1110:yl=nl:yh=nh:gosub1500:goto2000
  133. 2290 rem handle return
  134. 2300 z=96:gosub1140:goto2000
  135. 2310 rem handle if
  136. 2320 gosub1010:ifb<65 or b>90 then5360
  137. 2330 b=b-65:nn=(b*2)+679:gosub1110:vh=nh:vl=nl
  138. 2340 gosub1010
  139. 2350 ifb=177thenf1=1:goto2390:rem >
  140. 2360 ifb=178thenf1=2:goto2390:rem =
  141. 2370 ifb=179thenf1=3:goto2390:rem <
  142. 2380 goto5360:rem syntax error
  143. 2390 f3=0:gosub1010:ifb<65then2420
  144. 2400 gosub1250:f3=1:b=b-65:nn=(b*2)+679:gosub1110:goto2430
  145. 2410 rem if <var> <=> <num or var>
  146. 2420 ad=ad-1:gosub1080:ad=ad-1:nn=n:gosub1110
  147. 2430 gosub1480:gosub1330:iff3thengosub1560:goto2450
  148. 2440 gosub1520
  149. 2450 y=2:gosub1470:gosub1340:iff3thengosub1570:goto2470
  150. 2460 gosub1530
  151. 2470 y1=5:y2=2:gosub1600
  152. 2480 iff1<>3then2500
  153. 2490 y1=240:y2=5:gosub1600:y1=176:y2=3:gosub1600:goto2530
  154. 2500 iff1<>2then2520
  155. 2510 y1=208:y2=3:gosub1600:goto2530
  156. 2520 y1=144:y2=5:gosub1600:y1=240:y2=3:gosub1600:goto2530
  157. 2530 gosub1010:ifb<>167then5360
  158. 2540 gosub1080:if p<>3 then2580
  159. 2550 ifxx=0then5380
  160. 2560 f2=0:fori=0to(xx-1):ifll(i,0)=nthenf2=1:nn=ll(i,1)
  161. 2570 next:iff2=0then5380
  162. 2580 gosub1110:yl=nl:yh=nh:gosub1510:goto2000
  163. 2590 rem handle poke
  164. 2600 gosub1200:vl=nl:vh=nh:tt=g:gosub1010:ifb<>44then5360
  165. 2610 gosub1200:ifttthen2660
  166. 2620 gosub1330:y=20:gosub1470:gosub1340:y=21:gosub1470
  167. 2630 ifgthengosub1310:goto2650
  168. 2640 gosub1270
  169. 2650 y=0:gosub1430:y1=129:y2=20:gosub1600:goto2000
  170. 2660 ifg=0thengosub1270:goto2680
  171. 2670 gosub1310
  172. 2680 ifvh=0theny=vl:gosub1470:goto2000
  173. 2690 gosub1350:goto2000
  174. 2700 rem handle for
  175. 2710 gosub1010:ifb<65 or b>90 then5360
  176. 2720 b=b-65:nn=(b*2)+679:gosub1110:vh=nh:vl=nl
  177. 2730 sk=sk+1:fs(sk,3)=nn:fs(sk,4)=0:fs(sk,1)=1
  178. 2740 gosub1010:ifb<>178then5360
  179. 2750 gosub1010:if b>64then2800
  180. 2760 rem start = constant
  181. 2770 ad=ad-1:gosub1080:nn=n:gosub1110:gosub1310:gosub1350:gosub1320:gosub1360
  182. 2780 ad=ad-1:goto2810
  183. 2790 rem start = variable
  184. 2800 b=b-65:nn=(b*2)+679:gosub1110:gosub1270:gosub1350:gosub1280:gosub1360
  185. 2810 gosub1010:ifb<>164then5360
  186. 2820 gosub1010:if b>64then2860
  187. 2830 rem to = constant
  188. 2840 ad=ad-1:gosub1080:ad=ad-1:fs(sk,0)=n:goto2870
  189. 2850 rem to = variable
  190. 2860 b=b-65:nn=(b*2)+679:fs(sk,0)=nn:fs(sk,4)=fs(sk,4) or 2
  191. 2870 fs(sk,2)=ml:gosub1010:ifb=0then2000
  192. 2880 rem handle step
  193. 2890 ifb<>169then5360
  194. 2900 gosub1010:if b>64then2940
  195. 2910 rem step = constant
  196. 2920 ad=ad-1:gosub1080:ad=ad-1:fs(sk,1)=n:goto2000
  197. 2930 rem step = variable
  198. 2940 b=b-65:nn=(b*2)+679:fs(sk,1)=nn:fs(sk,4)=fs(sk,4) or 4 : goto2000
  199. 2950 rem handle next
  200. 2960 ifsk=-1then5390
  201. 2970 nn=fs(sk,3):gosub1110:vl=nl:vh=nh
  202. 2980 nn=fs(sk,1):gosub1110
  203. 2990 gosub1490:gosub1330
  204. 3000 if(fs(sk,4)and4)=4 then3020
  205. 3010 gosub1540:goto3030
  206. 3020 gosub1580
  207. 3030 gosub1350
  208. 3040 gosub1340
  209. 3050 if(fs(sk,4)and4)=4 then3070
  210. 3060 gosub1550:goto3080
  211. 3070 gosub1590
  212. 3080 gosub1360
  213. 3090 nn=fs(sk,2):gosub1110:al=nl:ah=nh
  214. 3100 nn=fs(sk,0):gosub1110
  215. 3110 gosub1480:gosub1330
  216. 3120 if(fs(sk,4)and2)=2 then3140
  217. 3130 gosub1520:goto3150
  218. 3140 gosub1560
  219. 3150 y=2:gosub1470
  220. 3160 gosub1340
  221. 3170 if(fs(sk,4)and2)=2 then3190
  222. 3180 gosub1530:goto3200
  223. 3190 gosub1570
  224. 3200 y1=5:y2=2:gosub1600
  225. 3210 y1=240:y2=2:gosub1600:y1=176:y2=3:gosub1600
  226. 3220 yl=al:yh=ah:gosub1510
  227. 3230 sk=sk-1:goto2000
  228. 3240 rem handle print chr$()
  229. 3250 gosub1010:ifb<>40then5360
  230. 3260 gosub1010:ifb>64then3280
  231. 3270 ad=ad-1:gosub1080:y=(n and 255):gosub1620:goto3300
  232. 3280 b=b-65:nn=(b*2)+679:gosub1110
  233. 3290 gosub1270
  234. 3300 yl=210:yh=255:gosub1500:gosub1010:ifb<>59then2150
  235. 3305 goto2000
  236. 3310 rem handle read
  237. 3320 ifp<>2 then3370
  238. 3330 ifli%(1,5)=1then3350
  239. 3340 f2=1:nn=la:gosub1110:li%(1,3)=nl:li%(1,4)=nh:li%(1,5)=1:la=la+li%(1,2)
  240. 3350 ifli%(0,5)=1then3370
  241. 3360 nn=la:gosub1110:li%(0,3)=nl:li%(0,4)=nh:li%(0,5)=1:la=la+li%(0,2)
  242. 3370 gosub1010:b=b-65:nn=(b*2)+679:gosub1110
  243. 3380 yl=li%(1,3):yh=li%(1,4):gosub1500
  244. 3390 gosub1290
  245. 3400 z=142:gosub1390:goto2000
  246. 3410 rem handle restore
  247. 3420 ifp<>2then3450
  248. 3430 ifli%(0,5)=1then3450
  249. 3440 f2=1:nn=la:gosub1110:li%(0,3)=nl:li%(0,4)=nh:li%(0,5)=1:la=la+li%(0,2)
  250. 3450 yl=li%(0,3):yh=li%(0,4):gosub1500:goto2000
  251. 3460 rem handle data
  252. 3470 gosub1010:ad=ad-1:ifb=0then2000
  253. 3480 gosub1080:nn=n:gosub1110:gosub1180:ifb=44then3480
  254. 3490 goto2000
  255. 3500 rem handle clr
  256. 3510 nn=bs+64:gosub1110:yl=nl:yh=nh:gosub1500:goto2000
  257. 3520 rem handle get
  258. 3530 gosub1010:gosub1250
  259. 3540 b=b-65:nn=(b*2)+679:gosub1110:vh=nh:vl=nl
  260. 3550 yl=228:yh=255:gosub1500:gosub1290
  261. 3560 y=0:gosub1620
  262. 3570 gosub1300:goto2000
  263. 3580 rem
  264. 3590 rem handle let
  265. 3600 rem
  266. 3610 gosub1200:ifgthen5360
  267. 3620 vl=nl:vh=nh
  268. 3630 gosub1010:ifb<>178then5360
  269. 3640 gosub1030
  270. 3650 rem handle functions here
  271. 3660 ifb=194then4350: rem peek
  272. 3670 gosub1200:gosub1010:op=0
  273. 3680 ms(0,0)=nl:ms(0,1)=nh:ms(0,2)=g:ms(0,3)=nn
  274. 3690 if((b=0)or(b=58))thense=b:goto3760
  275. 3700 op=b:ro=b:ifop=175thenop=172
  276. 3710 ifop=176thenop=173
  277. 3720 ifro=172thenop=174
  278. 3730 ifro=173thenop=175
  279. 3740 gosub1200:gosub1010
  280. 3750 ms(1,0)=nl:ms(1,1)=nh:ms(1,2)=g:ms(1,3)=nn:se=b
  281. 3760 ifop<>0then3840
  282. 3770 h=0:gosub1370:ifms(0,2)then3810
  283. 3780 rem <var> = <var>
  284. 3790 gosub1270:gosub1350:gosub1280:gosub1360:goto3820
  285. 3800 rem <var> = <const>
  286. 3810 gosub1310:gosub1350:gosub1320:gosub1360
  287. 3820 ifse=58then3610
  288. 3830 goto2000
  289. 3840 if((op<170)or(op>173))then4070
  290. 3850 rem handle addition & subtraction
  291. 3860 ifms(0,2)+ms(1,2)<>2 then3920
  292. 3870 rem <var> = <const> <+-> <const>
  293. 3880 rem  gosub 500
  294. 3890 ifop=170then nn=ms(0,3)+ms(1,3):gosub1110:goto3810
  295. 3900 ifop=171then nn=ms(0,3)-ms(1,3):gosub1110:goto3810
  296. 3910 goto5360
  297. 3920 ifop=170thenz=24:gosub1140
  298. 3930 ifop=171thenz=56:gosub1140
  299. 3940 h=0:gosub1370:n1=nl:n2=nh:ifms(0,2)thengosub1310:goto3960
  300. 3950 gosub1270
  301. 3960 z=oc%(op-170,ms(1,2)):tt=z
  302. 3970 h=1:gosub1370:n3=nl:n4=nh:ifms(1,2)thengosub1400:goto3990
  303. 3980 gosub1380
  304. 3990 gosub1350
  305. 4000 nl=n1:nh=n2:ifms(0,2)thengosub1320:goto4020
  306. 4010 gosub1280
  307. 4020 z=tt:nl=n3:nh=n4:ifms(1,2)thengosub1410:goto4040
  308. 4030 gosub1390
  309. 4040 gosub1360
  310. 4050 ifse=58then3610
  311. 4060 goto2000
  312. 4070 ifop=175then4130
  313. 4080 ifop<>174then5360
  314. 4090 ifp<>2then4160
  315. 4100 ifli%(3,5)=1then4160
  316. 4110 f2=1:nn=la:gosub1110:li%(3,3)=nl:li%(3,4)=nh:li%(3,5)=1:la=la+li%(3,2)
  317. 4120 goto4160
  318. 4130 ifp<>2then4160
  319. 4140 ifli%(2,5)=1then4160
  320. 4150 f2=1:nn=la:gosub1110:li%(2,3)=nl:li%(2,4)=nh:li%(2,5)=1:la=la+li%(2,2)
  321. 4160 h=0:gosub1370:ifms(0,2)then4180
  322. 4170 gosub1270:y=5:gosub1470:gosub1280:y=6:gosub1470:goto4190
  323. 4180 gosub1310:y=5:gosub1470:gosub1320:y=6:gosub1470
  324. 4190 h=1:gosub1370:ifms(1,2)then4210
  325. 4200 gosub1270:y=3:gosub1470:gosub1280:y=4:gosub1470:goto4220
  326. 4210 gosub1310:y=3:gosub1470:gosub1320:y=4:gosub1470
  327. 4220 ifop=174then4250
  328. 4230 z=32:gosub1140:z=li%(2,3):gosub1140:z=li%(2,4):gosub1140
  329. 4240 y=5:gosub1420:gosub1350:y=6:gosub1420:gosub1360:goto4270
  330. 4250 z=32:gosub1140:z=li%(3,3):gosub1140:z=li%(3,4):gosub1140
  331. 4260 y=163:gosub1420:gosub1350:y=164:gosub1420:gosub1360
  332. 4270 ifse=58then3610
  333. 4280 goto2000
  334. 4290 rem handle sys
  335. 4300 gosub1200:ifgthen4320
  336. 4310 gosub1270:y=20:gosub1470:gosub1280:y=21:gosub1470:goto4330
  337. 4320 gosub1310:y=20:gosub1470:gosub1320:y=21:gosub1470
  338. 4330 z=32:gosub1140:z=48:gosub1140:z=225:gosub1140:goto2000
  339. 4340 rem handle peek
  340. 4350 gosub1010:gosub1010:ifb<>40then5360
  341. 4360 gosub1200:ifgthen4410
  342. 4370 gosub1270:y=20:gosub1470:gosub1280:y=21:gosub1470:y=0:gosub1430:y=20:gosub1440
  343. 4380 gosub1350:nl=0:gosub1310:gosub1360:gosub1010:ifb<>41then5360
  344. 4390 gosub1010:ifb=58then3610
  345. 4400 goto2000
  346. 4410 ifnh=0then4430
  347. 4420 gosub1270:goto4380
  348. 4430 y=nl:gosub1420:goto4380
  349. 4440 rem this is file save routine
  350. 4450 input "[147]enter filename:";a$
  351. 4460 nn=dw+2:gosub1110:l=len(a$):ad=0:vl=0:vh=0:i=0
  352. 4470 a$=a$:poke251,peek(71):poke252,peek(72):ad=peek(251)+peek(252)*256
  353. 4480 vl=peek(ad+1):vh=peek(ad+2)
  354. 4490 poke780,8:poke781,8:poke782,1
  355. 4500 sys65466 :rem setlfs
  356. 4510 poke780,l:poke781,vl:poke782,vh
  357. 4520 sys65469 :rem setnam
  358. 4525 th=nh:tl=nl:nn=bs:gosub1110
  359. 4530 poke251,nl:poke252,nh :rem start
  360. 4540 poke780,251:poke781,tl:poke782,th
  361. 4550 sys65496 :rem save
  362. 4560 end
  363. 4570 rem print compile info
  364. 4580 print
  365. 4590 print"start........ $";:nn=bs:gosub1120:print
  366. 4600 print"string pool.. $";:nn=zp:gosub1120:print
  367. 4610 print"runtime lib.. $";:nn=sp:gosub1120:print
  368. 4620 print"code start... $";:nn=la:gosub1120:print
  369. 4630 print"code end .... $";:nn=db-1:gosub1120:print
  370. 4640 print"code size.... $";:nn=(db-1)-la:gosub1120
  371. 4650 print" (";mid$(str$((db-1)-la),2);") bytes"
  372. 4660 print"data area.... $";:nn=db:gosub1120:print
  373. 4670 print"prog end..... $";:nn=dw+2:gosub1120:print
  374. 4680 printtab(14);"-------------------"
  375. 4690 print"total size... $";:nn=(dw+2)-bs:gosub1120
  376. 4700 print" (";mid$(str$((dw+2)-bs),2);") bytes"
  377. 4710 print:print:print"    zip-basic, copyright (c) 1991 by"
  378. 4720 printtab(8);"softdisk publishing inc."
  379. 4730 printtab(10);"all rights reserved"
  380. 4740 return
  381. 4750 rem handle runtime library
  382. 4760 print"[147]building runtime library..."
  383. 4770 fori=bstobs+47:pokei,0:next:fori=bs+48tobs+62:pokei,234:next
  384. 4780 pokebs+63,96:pokebs,32:nn=bs+48:gosub1110:pokebs+1,nl:pokebs+2,nh
  385. 4790 read d$:fori=1tolen(d$):pokebs+9+i,asc(mid$(d$,i,1)):next
  386. 4800 fori=bs+64tobs+74:readd:pokei,d:next
  387. 4810 pokebs+51,32:nn=bs+64:gosub1110:pokebs+52,nl:pokebs+53,nh
  388. 4820 poke bs+3,76:nn=la:gosub1110:pokebs+4,nl:pokebs+5,nh
  389. 4830 iff2<>1thenreturn
  390. 4840 fori=0tolx
  391. 4850 ifli%(i,5)<>1 then4900
  392. 4860 rem install library
  393. 4870 sys828,li%(i,0),li%(i,1)
  394. 4880 nt=li%(i,3)+(li%(i,4)*256):nc=li%(i,2)-1
  395. 4890 ff=0:forj=0tonc:readd:ifsgn(d)<>-1then 4896
  396. 4892 if ff=1then ff=0:d=nh:goto4896
  397. 4894 nn=abs(d)+bs:gosub1110:ff=1:d=nl
  398. 4896 pokent+j,d:next
  399. 4900 next
  400. 4910 ifli%(0,5)<>1then4940
  401. 4920 nn=db:gosub1110:pokebs+6,nl:pokebs+7,nh:nn=dw:gosub1110:pokebs+8,nl
  402. 4930 pokebs+9,nh:pokebs+48,32:pokebs+49,li%(0,3):pokebs+50,li%(0,4)
  403. 4940 return
  404. 4950 rem lib array data
  405. 4960 data 176,19,11,0,0,0 :rem restore
  406. 4970 data 206,19,43,0,0,0 :rem read
  407. 4980 data 20,20,59,0,0,0 :rem divide
  408. 4990 data 110,20,48,0,0,0 :rem multiply
  409. 5000 data "zip-bas (c) 1991 by softdisk inc."
  410. 5010 data 162,88,169,0,157,167,2,202
  411. 5020 data 16,250,96
  412. 5030 rem this is library restore
  413. 5040 data 173,-6,-1,133,65,173,-7,-1
  414. 5050 data 133,66,96
  415. 5060 rem *** this is library read ***
  416. 5070 data 165,65,205,-8,-1,208,12,165
  417. 5080 data 66,205,-9,-1,208,5,162,13
  418. 5090 data 108,0,3,160,0,177,65,72
  419. 5100 data 200,177,65,170,24,165,65,105
  420. 5110 data 2,133,65,165,66,105,0,133
  421. 5120 data 66,104,96
  422. 5130 rem *** this is library divide ***
  423. 5140 data 165,3,5,4,208,5,162,20
  424. 5150 data 108,0,3,169,0,133,163,133
  425. 5160 data 164,162,16,6,5,38,6,38
  426. 5170 data 163,38,164,56,165,163,229,3
  427. 5180 data 168,165,164,229,4,144,6,230
  428. 5190 data 5,133,164,132,163,202,208,227
  429. 5200 data 165,163,141,217,2,165,164,141
  430. 5210 data 218,2,96
  431. 5220 rem *** library multiply ***
  432. 5230 data 169,0,133,165,133,166,162,16
  433. 5240 data 70,4,102,3,144,11,24,165
  434. 5250 data 165,101,5,133,165,165,166,101
  435. 5260 data 6,106,133,166,102,165,102,164
  436. 5270 data 102,163,202,208,227,165,165
  437. 5280 data 141,217,2,165,166,141,218,2
  438. 5290 data 96
  439. 5360 er$="syntax error":goto5400
  440. 5370 er$="bad command":goto5400
  441. 5380 er$="undef'd statement":goto5400
  442. 5390 er$="next without for":goto5400
  443. 5400 print "[error][146] " er$" in line"ln:end
  444. 5410 rem fixup line numbers
  445. 5420 n=r2-r1:ifn=0thenreturn
  446. 5430 fori=0toxx-1:ll(i,1)=ll(i,1)+n:next:return
  447. 5440 poke828,32:poke829,253:poke830,174:poke831,32:poke832,158:poke833,183
  448. 5450 poke834,134:poke835,20:poke836,32:poke837,253:poke838,174:poke839,32
  449. 5460 poke840,158:poke841,183:poke842,134:poke843,21:poke844,32:poke845,19
  450. 5470 poke846,166:poke847,176:poke848,3:poke849,76:poke850,227:poke851,168
  451. 5480 poke852,165:poke853,95:poke854,164:poke855,96:poke856,56:poke857,233
  452. 5490 poke 858,1:poke859,76:poke860,36:poke861,168
  453. 5500 oc%(0,0)=109:oc%(0,1)=105:oc%(1,0)=237:oc%(1,1)=233
  454. 5510 oc%(2,0)=45:oc%(2,1)=41:oc%(3,0)=13:oc%(3,1)=9
  455. 5520 hx$="0123456789abcdef":return
  456.